

const C = require("./ResultStatus")
class ResultUtil {

  /**
   * 响应状态码
   */
  code;

  /**
   * 响应信息
   */
  message;

  /**
   * 响应对象
   */
  data;


  /**
   * 查询数据时的总数量
   */
  total

  /**
   * 构造函数，创建响应结果集对象
   * @param {*} code 
   * @param {*} message 
   * @param {*} data 
   */
  constructor(code, data = null) {
    this.code = code
    this.message = C[code]
    this.data = data
  }

  setCode(code) {
    this.code = code
  }

  setMessage(message) {
    this.message = message
  }

  setData(data) {
    this.data = data
  }

  setTotal(total) {
    this.total = total
  }

  getCode() {
    return this.code
  }

  getMessage() {
    return this.message
  }

  getData() {
    return this.data
  }

  getTotal() {
    return this.total
  }

  /**
   * 请求成功
   * @returns 
   */
  static success(code, data) {
    return new ResultUtil(code, data)
  }

  /**
   * 请求失败
   * @returns 
   */
  static error(code, data) {
    return new ResultUtil(code, data)
  }
  add(obj) {
    return {
      ...this,
      ...obj
    }
  }
}

module.exports = ResultUtil